/** A class representing a city on a map. This class holds various pieces of information
    relevent to a city placed on a map, including the name, state, etc. This class is intended
    to be used as node information - it contains a position which can be used to represent it on
    a graph, for example.
    @author Ian Helmke, Dan King
*/
class City {
  /** The name of this city. **/
  private String name;
  /** The two-letter abbreviation of the state in which this city is located. **/
  private String state;
  /** The position of this city on a map. */
  private Posn position;

  /** The constructor. **/
  public City(String name, String state, Posn position) {
    this.name = name;
    this.state = state;
    this.position = position;
  }

  public City(String zip, String name, String state, double longitude, double latitude) {
    this.name = name;
    this.state = state;
    this.position = new Posn(longitude, latitude);
  }

  /** Gets the position of this city.
      @return The position of this city. */
  public Posn getPosition() {
    return this.position;
  }
  
  /** Gets the state that this city belongs to.
      @return The state that this city belongs to. */
  public String getState() {
    return this.state;
  }

  /** Gets the name of this city.
      @return The name of this city. */
  public String getName() {
    return this.name;
  }

}
